Virtualization allows multiplexing of an underlying host machine between different virtual machines. The host computer allocates a certain amount of its resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems (referred to as guest operating systems). The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor, or a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
Virtual machines can be provided by a centralized host that is coupled to multiple clients over a network. A virtual machine can provide a virtual desktop for a client and executes graphics operations relating to the virtual desktop. Conventional techniques render graphics either remotely on the client, or locally by software on the host. Graphics rendering by software on the host consumes host CPU cycles. However, it is sometimes necessary to render graphics on the host before the rendered pixels are transmitted to the client for viewing. Host performance can be significantly degraded when multiple virtual machines render graphics by software on the host at the same time.